如何使用Couchbase和Node.js SDK在存储桶中执行更新和删除操作 [英] How to perform Update and Delete operations in a bucket using Couchbase and Nodejs sdk

查看:50
本文介绍了如何使用Couchbase和Node.js SDK在存储桶中执行更新和删除操作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Node.js从mongodb迁移到Couchbase.我想执行CRUD操作. Insert(create) Get 工作正常,但是当我想执行 Update Delete 时遇到一些错误消息(此处使用'upsert','replace'进行更新)类似于

I am moving from mongodb to Couchbase using Node.js. I want to perform the CRUD operations. Insert(create) and Get are working fine, but when I want to perform Update and Delete getting some error messages (Here update purpose using 'upsert','replace' are used) like:

TypeError:无法读取未定义的属性替换"

TypeError: Cannot read property 'replace' of undefined

这是代码:

db.js

db.js

// Instantiate Couchbase and Ottoman
var couchbase=require('couchbase');
var ottoman=require('ottoman');
// Build my cluster object and open a new cluster
var myCluster = new couchbase.Cluster('localhost:8091');
var myBucket = myCluster.openBucket('default');
ottoman.bucket=myBucket;
require('./model/user');
ottoman.ensureIndices(function(){});

user.js

user.js

var db = require('./../db.js').myBucket;
var ottoman = require('ottoman');

var userMdl = ottoman.model('User', {
    firstName: {type:'string'},
    lastName: {type:'string'},
    created: {type: 'Date', default:function(){return new Date()}},
    email:'string',
    phone: 'string'
},{
    index: {
        findByID: {   
            by: '_id'
        },
    }

})  
module.exports = userMdl;

routes.js

routes.js

 var bodyParser = require('body-parser');
    var db = require('../schema/db').myBucket;
    var user=require('../schema/model/user');
    var jsonParser = bodyParser.json();
    var urlencodedParser = bodyParser.urlencoded({ extended: false });

    module.exports = function (app) {
    // Delete a record
    app.post("/api/delete/:_id", function(req, res) {
        console.log("_id:"+req.params._id)
        if(!req.params._id) {
            return res.status(400).send({"status": "error", "message": "A document id is required"});
        }
        db.delete({_id:req.params._id}, function(error, result) {
            if(error) {
                return res.status(400).send(error);
            }
            res.send(result);
        });
    });

    app.post('/api/user/update/:id',function(req,res){
       db.replace(req.params.id,{firstName:"Mahesh"},function(err,result){
         if (err) {
            res.status = 400;
            res.send(err);
            return;
         }
         else {
           res.status = 202;
           res.send(result);  
          }
        })
      })
    }

最近两天我一直被困在这里.

I am stuck here from last two days.

推荐答案

您可以使用两种方法来更新Couchbase文档,一种是 upsert 方法,第二种是 N1qlQuery

You can update Couchbase document using 2 ways 1st by upsert method and second by N1qlQuery

bucket.upsert('user', {'name': 'Jay'}, {'expiry': 1}, function(err){
    bucket.get('user', function(err, result) {
        console.log('Have item: %j', result.value);
    })
});

let query = N1qlQuery.fromString("UPDATE `"+BUCKETNAME+"` SET name='"+data.name+"'  where _id ='"+id+"'");
bucket.query(query,(error,result)=>{
    if(error){
        console.log(error);
    }
    console.log(result);
});

您可以使用两种方法删除Couchbase文档,第一种是 Removed 方法,第二种是通过 N1qlQuery

You can delete Couchbase document using 2 ways 1st is removed method and second by N1qlQuery

bucket.remove(id, function(error, result) {
    console.log("Deleted");
});

let query = N1qlQuery.fromString("DELETE FROM `"+BUCKETNAME+"` WHERE _id = '"+id+"'");
bucket.query(query,(error,result)=>{
    if(error){
        console.log(error);
    }
    console.log(result);
})

这篇关于如何使用Couchbase和Node.js SDK在存储桶中执行更新和删除操作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆