相关疑难解决方法(0)

如何在Mongoose中更新/插入文档?

也许是时候了,也许是我淹没在稀疏的文档中,而且无法绕过Mongoose更新的概念:)

这是交易:

我有一个联系方案和模型(缩短属性):

var mongoose = require('mongoose'),
    Schema = mongoose.Schema;

var mongooseTypes = require("mongoose-types"),
    useTimestamps = mongooseTypes.useTimestamps;


var ContactSchema = new Schema({
    phone: {
        type: String,
        index: {
            unique: true,
            dropDups: true
        }
    },
    status: {
        type: String,
        lowercase: true,
        trim: true,
        default: 'on'
    }
});
ContactSchema.plugin(useTimestamps);
var Contact = mongoose.model('Contact', ContactSchema);
Run Code Online (Sandbox Code Playgroud)

我收到客户的请求,其中包含我需要的字段,因此使用我的模型:

mongoose.connect(connectionString);
var contact = new Contact({
    phone: request.phone,
    status: request.status
});
Run Code Online (Sandbox Code Playgroud)

现在我们解决了这个问题:

  1. 如果我打电话,contact.save(function(err){...})如果有相同电话号码的联系人已经存在,我将收到错误(正如预期的那样 - 唯一)
  2. 我不能打电话update()给联系人,因为文件上不存在该方法
  3. 如果我在模型上调用update:
    Contact.update({phone:request.phone}, contact, {upsert: true}, function(err{...})
    我进入了一些类型的无限循环,因为Mongoose更新实现显然不希望将对象作为第二个参数. …

javascript mongoose mongodb node.js

334
推荐指数
12
解决办法
38万
查看次数

Mongoose.js:如何实现创建或更新?

我有一个请求,其中包含数据和_id

如果带有_id的记录存在并且创建一个没有人的代码,那么实现代码的更好方法是什么?我的代码:

var obj = req.body;
Model.findById(obj._id, function(err, data){
    if (!data){
        var model = new Model(obj)
        model.save(function(err, data){
            res.send({method: 'create', error: err, data: data})
        })
    } else {
        Model.findByIdAndUpdate(obj._id, obj, function(){
            res.send({method: 'update', error: err, data: data})
        })
    }
Run Code Online (Sandbox Code Playgroud)

我只是想也许有更好的办法.

mongoose

50
推荐指数
1
解决办法
4万
查看次数

使用Mongoose返回更新的集合

我使用nodejs/express/mongoose/angularjs.我想更新一个名为Lists的集合,它有几个属性,其中一个是项目数组.在下面的代码中,我在items数组中推送一个新的任务项.一切正常,但更新功能不会发回更新的集合,然后我必须对数据库执行另一个查询.有没有更有效的方法来做到这一点?

nodejs/express代码:

exports.addTaskToList = function(req, res) {
    var listId = req.params.Id;
    var taskId = req.params.TaskId;
    Lists.update({_id: listId}, {$push: {items: taskId}}, {safe:true, upsert: true}, function(err, result){
        if(err) {
            console.log('Error updating todo list. ' + err);
        }
        else{
            console.log(result + ' todo list entry updated - New task added');
            Lists.findById(listId).populate('items').exec(function (err, updatedEntry) {
                if (err) {
                    console.log('Unable to retrieve todo list entry.');
                }
                res.send(JSON.stringify(updatedEntry));
            });
        }           
    });
};
Run Code Online (Sandbox Code Playgroud)

此外,数组项是ObjectIds的数组.这些项目位于单独的模式中,因此位于单独的集合中.是否可以推送整个对象,而不仅仅是其_id,以便不会创建另一个集合?

javascript mongoose mongodb node.js express

28
推荐指数
2
解决办法
3万
查看次数

如何在更新期间检查数据库中是否已存在该数据(Mongoose And Express)

如何在mongoose中保存编辑后的数据之前进行验证?

例如,如果sample.name数据库中已存在,则用户将收到某种错误,类似于此,这是我的代码,如下所示

//Post: /sample/edit
app.post(uri + '/edit', function (req, res, next) {
  Sample.findById(req.param('sid'), function (err, sample) {

    if (err) {
      return next(new Error(err));
    }

    if (!sample) {
      return next(new Error('Invalid reference to sample information'));
    }

    // basic info
    sample.name = req.body.supplier.name;
    sample.tin = req.body.supplier.tin;

    // contact info
    sample.contact.email = req.body.supplier.contact.email;
    sample.contact.mobile = req.body.supplier.contact.mobile;
    sample.contact.landline = req.body.supplier.contact.landline;
    sample.contact.fax = req.body.supplier.contact.fax;

    // address info
    sample.address.street = req.body.supplier.address.street;
    sample.address.city = req.body.supplier.address.city;
    sample.address.state = req.body.supplier.address.state;
    sample.address.country = req.body.supplier.address.country;
    sample.address.zip = req.body.supplier.address.zip;

    sample.save(function …
Run Code Online (Sandbox Code Playgroud)

validation mongoose node.js express

25
推荐指数
2
解决办法
10万
查看次数

NodeJS + Mongo:如果不存在则插入,否则 - 更新

我的mongodb集合中有一个对象.它的架构是:

{
    "instruments": ["A", "B", "C"],
    "_id": {
        "$oid": "508510cd6461cc5f61000001"
    }
}
Run Code Online (Sandbox Code Playgroud)

我的收藏可能有这样的对象,但可能没有.我需要检查是否有关键的"乐器"对象存在(请notе,我不知道还有什么价值"仪器"就是在这个时候,它可能包含任何值或数组),如果存在-执行更新,否则 - 插入新值.我怎样才能做到这一点?

collection.find( {  "instruments" : { $exists : true } }, function(err, object){
    if (object) {
        //update
    } else {
        //insert
    }
});
Run Code Online (Sandbox Code Playgroud)

不起作用((

insert exists updates mongodb node.js

20
推荐指数
1
解决办法
3万
查看次数